#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：group-learn 
@File    ：listL.py
@IDE     ：PyCharm 
@Author  ：lcy-tester
@Date    ：2023/11/28 15:17 
"""
"""
是python基本数据结构，包含多个元素用英文逗号隔开，每个元素都有下标和值，类型可以随意
创建列表 ：直接声明、多列表声明、转换、split()、range、列表推导、随机数字列表
列表拼接：join
常用列表：所有大写字母/小写字母/数字/0-9字符串digits/string.ascii_
下标 ：从左，从右，index
列表的长度：len
切片：左闭右开，左开右闭，闭合

列表相加：+
列表乘法：* (*比1小的整数 会清空列表)
列表求和：sum
遍历：元素遍历、下标遍历、倒叙遍历
求最大最小：max、min
插入：append、insert、循环、extend()
删除：remove、pop、clear、del、*0、切片赋值空列表、列表推导
查找：index

修改：下标、切片、for循环、list(map((lambda x:x*10),l1))、[ i*3 for i in l1 ]
倒叙：reverse、切片、list(reversed(列表))
判断是否包含：in ，for循环，count


判断相等：== 、is、difference、operator.eq()
求元素出现次数：count、collections.Counter(l1)["c"]
排序：sort（reverse=）、sort(key=lambda i:i)，sorted(列表,reverse)
复制：赋值、切片、推导、for循环、浅拷贝、深拷贝


去重：for循环、列表推导筛、list(set()) 、列表2.sort(key=列表1.index) 、列表2=sorted(list(set(列表1)),key=列表1.index)、列表2 = list({}.fromkeys(列表1).keys())
获取所有组合： 固定顺序 list(itertools.combinations(列表,子长度)) / 无顺序 list( itertools.permutations(列表))
过滤列表：for循环、列表推导筛选、list(filter(lambda n:n%2,列表))

"""
import itertools

lis = ["lucy", "lcy", "lcy-tester", "lcy-tester-1", "lcy-tester-2"]
#
print(lis[-2:-4:-1])  # 左闭右开

lis2 = ["cas", "case1", "case2", "case3", "case4"]
print(lis + lis2)

# lis2.extend(lis)  # 扩展追加后面
# print(lis2)

lis2.append("caseAppend")   # 末尾追加
lis2.insert(2, "caseInsert")  # 指定位置插入
print(lis2)

lis2.remove("cas") # 移除指定
print(lis2)
lis2.pop()  # 删除末尾
print(lis2)

print(lis2.index("caseInsert"))  # 查找指定元素的索引

lis2.reverse()
print(lis2)

lis3 = [1, 2, 3, 4, 5]
lis3.sort(reverse=True)  # 默认升序 reverse=True降序
print(lis3)

# print(list(filter(lambda x: x % 2 == 0, lis3)))  # 过滤使用

print(list(itertools.combinations(lis3, 3)))  # 获取列表内 3个元素组合 的列表
print(list(itertools.permutations(lis3, 2)))